package net.iceflow.dunsel.commons;

/**
 *
 */
public interface Subscribable<L> {
    /**
     * Adds a listener.
     * @param listener Listener to add
     */
    void addListener(final L listener);

    /**
     * Removes a listener.
     * @param listener Listener to remove
     */
    void removeListener(final L listener);

    /**
     * Removes all listeners.
     * @param listener Listener to remove
     */
    void removeAllListeners();
}
